package com.zl.cms.dao;

import com.zl.basic.dao.IBaseDao;
import com.zl.cms.model.Channel;
import com.zl.cms.model.ChannelTree;

import java.util.List;

/**
 * User: zl email:c3tc3tc3t@126.com Date: 14-2-1 Time: 下午3:14
 */
public interface IChannelDao extends IBaseDao<Channel> {
  /**
   * 根据pid获得栏目列表,如果pid为空，返回所有作为父栏目的栏目列表 如果pid不为空,返回所有子栏目, 子栏目的父栏目的id 等于 pid
   * 
   * @param pid 父栏目id
   * @return (父)栏目列表
   */
  public List<Channel> listByParent(Integer pid);

  /**
   * 获取栏目排序最大序号
   * 
   * @param pid 栏目父id
   * @return 最大序号
   */
  public Integer getMaxOrderByParent(Integer pid);

  /**
   * 返回显示所有栏目,返回的栏目用于显示栏目树
   * 
   * @return 对象列表
   */
  public List<ChannelTree> generateTree();

  /**
   * 根据父类对象获取子类栏目，用于显示栏目树 如果pid为空,返回所有作为父栏目的对象列表
   * 
   * @param pid 父id
   * @return 对象列表
   */
  public List<ChannelTree> generateTreeByParent(Integer pid);

	/**
	 * 更新排序后的文章栏目列表
	 * @param ids 文章栏目的新排序顺序id
	 */
	public void updateSort(Integer[] ids);

	/**
	 * 获取所有可以发布文章的栏目，栏目的状态必须为已启用状态
	 * @return
	 */
	public List<Channel> listPublishChannel() ;
}
